home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EnigmA Amiga Run 1997 February
/
EnigmA AMIGA RUN 15 (1997)(G.R. Edizioni)(IT)[!][issue 1997-02][PLANET CD V].iso
/
enigma
/
earcd
/
utility
/
utilcli
/
reqch.lha
/
ReqCh
/
ReqCh.s
< prev
next >
Wrap
Text File
|
1996-10-28
|
9KB
|
446 lines
*****************************************************************************
* *
* PROGRAM: ReqCh (a replacement for RequestChoice) *
* VERSION: 40.1 *
* SOURCE CODE: 7 *
* DATE: 23.10.1996 *
* LANGUAGE: Assembler *
* SYSTEM: A1200 KS 40.68 WB 40.42 2MB chip 8MB fast 68030/50mhz *
* *
* AUTHOR: Joerg Riemer 14167 Berlin/SchottmuellerStr.107/Germany *
* EMAIL: mission@cs.tu-berlin.de *
* *
* FUNCTION: ReqCh lets AmigaDOS and ARexx scripts use the *
* Intuition EasyRequest() feature. It is a replacement *
* for the bugy command C:RequestChoice (new for [V39]) *
* Read the ReqCh.doc for more information. *
* *
* NEW FEATURES: creates a local variable called "ReqChGG" to hold *
* the gadget number selected by the user *
* *
* BUGS: none (i hope so) *
* *
*****************************************************************************
SECTION ReqCh,CODE
****************************************************************************
Start link.w A5,#-$68
movem.l D2/D3/D5-D7/A2/A3/A6,-(SP)
movea.w #4,A0
movea.l (A0),A2
movea.l A2,A0
moveq #ERROR_INVALID_RESIDENT_LIBRARY,D7
moveq #RETURN_FAIL,D6
move.l A0,($32,SP)
move.l A6,-(SP)
lea (DOSName,PC),A1
moveq #37,D0
movea.l A2,A6
jsr (_LVOOpenLibrary,A6)
movea.l (SP)+,A6
movea.l D0,A3
movea.l A3,A0
move.l A0,($2E,SP)
move.l A3,D0
beq.w LC3C8
move.l A6,-(SP)
lea (INTName,PC),A1
moveq #37,D0
movea.l A2,A6
jsr (_LVOOpenLibrary,A6)
movea.l (SP)+,A6
move.l D0,($2A,SP)
tst.l D0
beq.w LC39A
moveq #15,D1
moveq #0,D2
lea (-$24,A5),A0
LC058 move.b D2,(A0)+
dbra D1,LC058
move.l A6,-(SP)
lea (ArgTemplate,PC),A0
move.l A0,D1
lea (-$24,A5),A1
move.l A1,D2
moveq #0,D3
movea.l A3,A6
jsr (_LVOReadArgs,A6)
movea.l (SP)+,A6
tst.l D0
beq.w LC364
moveq #ERROR_REQUIRED_ARG_MISSING,D7
lea (Buffer,PC),A3
move.l D0,(A3)
movea.l (-$20,A5),A3
movea.l A3,A0
movea.l (-$1C,A5),A2
move.l A0,($20,SP)
move.l A2,D0
beq.w LC370
tst.l (A2)
beq.w LC370
movea.l A3,A1
LC0A0 tst.b (A1)+
bne.b LC0A0
subq.l #1,A1
suba.l A3,A1
move.l A1,D0
move.w D0,(-$3E,A5)
bra.b LC0FA
LC0B0 movea.l A3,A0
LC0B2 tst.b (A0)+
bne.b LC0B2
subq.l #1,A0
suba.l A3,A0
move.l A0,D0
addq.l #1,D0
moveq #0,D1
move.w (-$3E,A5),D1
add.l D0,D1
clr.w (-$40,A5)
move.w D1,(-$3E,A5)
bra.b LC0EC
LC0D0 move.w (-$40,A5),D0
move.l D0,D1
addq.w #1,D1
moveq #0,D2
move.w D0,D2
move.w D1,(-$40,A5)
moveq #$25,D0
cmp.b (A3,D2.L),D0
bne.b LC0EC
addq.w #1,(-$3E,A5)
LC0EC moveq #0,D0
move.w (-$40,A5),D0
tst.b (A3,D0.L)
bne.b LC0D0
addq.l #4,A2
LC0FA movea.l (A2),A3
move.l A3,D0
bne.b LC0B0
clr.w (-$40,A5)
movea.l ($20,SP),A3
bra.b LC128
LC10A move.w (-$40,A5),D0
move.l D0,D1
addq.w #1,D1
moveq #0,D2
move.w D0,D2
move.w D1,(-$40,A5)
moveq #$25,D0
cmp.b (A3,D2.L),D0
bne.b LC128
move.l D5,D0
move.w D0,(-$3E,A5)
LC128 moveq #0,D0
move.w (-$3E,A5),D0
move.l D0,D5
addq.l #1,D5
moveq #0,D0
move.w (-$40,A5),D0
tst.b (A3,D0.L)
bne.b LC10A
moveq #ERROR_NO_FREE_STORE,D7
move.l A6,-(SP)
move.l D5,D0
moveq #0,D1
movea.l ($36,SP),A6
jsr (_LVOAllocVec,A6)
movea.l (SP)+,A6
movea.l D0,A2
movea.l A2,A0
move.l A0,($26,SP)
move.l A2,D0
beq.w LC370
moveq #0,D0
move.w D0,(-$42,A5)
move.w D0,(-$40,A5)
bra.b LC1AA
LC16A move.w ($24,SP),D0
move.b (A3),(A2)
move.w (-$40,A5),D1
move.l D1,D2
addq.w #1,D2
movea.l ($20,SP),A3
moveq #0,D3
move.w D1,D3
movea.l ($26,SP),A2
move.w D0,(-$42,A5)
movem.w D2,(-$40,A5)
moveq #$25,D0
cmp.b (A3,D3.L),D0
bne.b LC1AA
move.w (-$42,A5),D1
move.l D1,D2
addq.w #1,D2
moveq #0,D3
move.w D1,D3
move.b D0,(A2,D3.L)
move.w D2,(-$42,A5)
LC1AA moveq #0,D0
move.w (-$40,A5),D0
adda.l D0,A3
moveq #0,D0
move.w (-$42,A5),D0
adda.l D0,A2
addq.w #1,D0
move.w D0,($24,SP)
tst.b (A3)
bne.b LC16A
move.w ($24,SP),(-$42,A5)
clr.b (A2)
movea.l (-$1C,A5),A3
bra.b LC238
LC1D2 clr.w (-$40,A5)
bra.b LC212
LC1D8 addq.w #1,(-$42,A5)
move.b (A3),(A2)
move.w (-$40,A5),D0
move.l D0,D1
addq.w #1,D1
movea.l ($20,SP),A3
moveq #0,D2
move.w D0,D2
movea.l ($26,SP),A2
move.w D1,(-$40,A5)
moveq #$25,D0
cmp.b (A3,D2.L),D0
bne.b LC212
move.w (-$42,A5),D1
move.l D1,D2
addq.w #1,D2
moveq #0,D3
move.w D1,D3
move.b D0,(A2,D3.L)
move.w D2,(-$42,A5)
LC212 moveq #0,D0
move.w (-$40,A5),D0
adda.l D0,A3
moveq #0,D0
move.w (-$42,A5),D0
adda.l D0,A2
tst.b (A3)
bne.b LC1D8
movea.l (-$3C,A5),A3
addq.l #4,A3
tst.l (A3)
beq.b LC238
addq.w #1,(-$42,A5)
move.b #$7C,(A2)
LC238 move.l A3,(-$3C,A5)
movea.l (A3),A3
movea.l A3,A0
movea.l ($26,SP),A2
move.l A0,($20,SP)
move.l A3,D0
bne.b LC1D2
moveq #0,D0
move.w (-$42,A5),D0
clr.b (A2,D0.L)
movea.l ($2A,SP),A3
moveq #0,D0
move.l D0,-(SP)
moveq #1,D1
move.l D1,-(SP)
move.l #WA_RMBTrap,-(SP)
move.l D1,-(SP)
move.l #WA_NoCareRefresh,-(SP)
move.l D1,-(SP)
move.l #WA_Borderless,-(SP)
move.l D1,-(SP)
move.l #WA_Backdrop,-(SP)
moveq #$10,D2
move.l D2,-(SP)
move.l #WA_Height,-(SP)
move.l D2,-(SP)
move.l #WA_Width,-(SP)
move.l D0,-(SP)
move.l #WA_Top,-(SP)
move.l D0,-(SP)
move.l #WA_Left,-(SP)
move.l (-$18,A5),-(SP)
move.l #WA_PubScreenName,-(SP)
move.l A3,-(SP)
bsr.w LC3D2
lea ($50,SP),SP
move.l D0,($20,SP)
tst.l D0
beq.w LC350
moveq #$14,D1
move.l D1,(-$38,A5)
clr.l (-$34,A5)
move.l (-$24,A5),(-$30,A5)
move.l A2,(-$2C,A5)
movea.l A2,A0
moveq #0,D1
move.w ($24,SP),D1
adda.l D1,A0
move.l A0,(-$28,A5)
movem.l A2/A3/A6,-(SP)
movea.l D0,A0
movea.l A3,A6
lea (-$38,A5),A1
suba.l A2,A2
movea.l A2,A3
jsr (_LVOEasyRequestArgs,A6)
movem.l (SP)+,A2/A3/A6
move.l D0,D7
moveq #0,D6
move.l D7,-(SP)
pea (OutputString,PC)
pea (-$52,A5)
jsr (LC3F6,PC)
lea (12,SP),SP
move.l A6,-(SP)
lea (-$52,A5),A0
move.l A0,D1
movea.l ($32,SP),A6
jsr (_LVOPutStr,A6)
lea (VarName,PC),A0
move.l A0,D1
lea (-$52,A5),A0
move.l A0,D2
moveq #-1,D3
LC32E addq.l #1,D3
cmpi.b #10,(A0)+
bne.b LC32E
move.l #GVF_LOCAL_ONLY,D4
jsr (_LVOSetVar,A6)
movea.l (SP)+,A6
move.l A6,-(SP)
movea.l ($24,SP),A0
movea.l A3,A6
jsr (_LVOCloseWindow,A6)
movea.l (SP)+,A6
LC350 movea.l ($32,SP),A2
movea.l ($26,SP),A1
move.l A6,-(SP)
movea.l A2,A6
jsr (_LVOFreeVec,A6)
movea.l (SP)+,A6
bra.b LC370
*****************************************************************************
LC364 move.l A6,-(SP)
movea.l A3,A6
jsr (_LVOIoErr,A6)
move.l D0,D7
movea.l (SP)+,A6
LC370 lea (Buffer,PC),A3
move.l (A3),D1
beq.b LC388
clr.l (A3)
movea.l ($2E,SP),A3
move.l A6,-(SP)
movea.l A3,A6
jsr (_LVOFreeArgs,A6)
movea.l (SP)+,A6
LC388 movea.l ($32,SP),A2
move.l A6,-(SP)
movea.l ($2E,SP),A1
movea.l A2,A6
jsr (_LVOCloseLibrary,A6)
movea.l (SP)+,A6
LC39A tst.l D6
beq.b LC3BC
movea.l ($2E,SP),A3
move.l A6,-(SP)
move.l D7,D1
movea.l A3,A6
jsr (_LVOSetIoErr,A6)
movea.l (SP)+,A6
move.l A6,-(SP)
move.l D7,D1
moveq #0,D2
movea.l A3,A6
jsr (_LVOPrintFault,A6)
movea.l (SP)+,A6
LC3BC move.l A6,-(SP)
movea.l A3,A1
movea.l A2,A6
jsr (_LVOCloseLibrary,A6)
movea.l (SP)+,A6
LC3C8 move.l D6,D0
movem.l (SP)+,D2/D3/D5-D7/A2/A3/A6
unlk A5
rts
*****************************************************************************
LC3D2 link.w A5,#0
movem.l A3/A6,-(SP)
movea.l (8,A5),A3
move.l A6,-(SP)
suba.l A0,A0
lea (12,A5),A1
movea.l A3,A6
jsr (_LVOOpenWindowTagList,A6)
movea.l (SP)+,A6
movem.l (SP)+,A3/A6
unlk A5
rts
*****************************************************************************
LC3F6 movem.l A2-A4/A6,-(SP)
movea.l ($14,SP),A3
movea.l ($18,SP),A0
lea ($1C,SP),A1
lea (LC41A,PC),A2
movea.l (4).l,A6
jsr (_LVORawDoFmt,A6)
movem.l (SP)+,A2-A4/A6
rts
LC41A move.b D0,(A3)+
rts
*****************************************************************************
Buffer dc.l 0
VarName dc.b "ReqChGG",0
DOSName dc.b "dos.library",0
INTName dc.b "intuition.library",0
ArgTemplate dc.b "TITLE/A,BODY/A,GADGETS/M,PUBSCREEN/K",0,0
OutputString dc.b "%ld",$A,0,0
*****************************************************************************
Version dc.b "$VER: reqch 40.1 (23.10.96) replacement for requestchoice",0
* eof ***********************************************************************